-------------------本地运行流程如下：--------------------

进入项目目录 yarn安装依赖

打开config/db.js 配置属于自己的微信，数据库，aliyun短信平台的各种参数

打开config/constant,配置属于自己的数据库地址，端口，数据库名等信息

打开数据库客户端，在数据库创建一个库，名字保持和config/constant中的MYSQLNAME字段一样。

进入db/目录

当以上所有步骤完成时，进入db/目录

直接一键创建表 运行:node sync.js

修改config/mysqlDb.js中的mysql.createPool配置项 ，当然也可以直接引入之前配好的参数constant.js

修改bin/www中的程序运行的端口  var port = normalizePort(process.env.PORT || '3200');

直接npm run start 就可以跑起来了。

--------------------线上发布流程如下：------------------
1，进入下项目本目录
2，打开ecosystem.json文件，此文件就是pm2一键发布的配置文件
3，name表示项目名字，user表示服务器的登录名，host表示服务器的ip地址，port服务器端的链接端口，ref表示git的分支 
   repo表示git的地址，path表示服务器的项目地址(前提是登录服务器，预先创建对应的文件目录)，post-deploy表示部署时需要运行的命令
4，配置本机电脑和线上服务器的免登录功能
5，获取服务器上.ssh目录下的xxxx.pub文件秘钥
6，把秘钥配置到git的ssh秘钥中
7，首次部署运行：本机项目跟目录：pm2 deploy ecosystem.json production setup
8，接着运行：pm2 deploy ecosystem.json production
9，完成部署(前提是服务器有pm2和node环境)
10，当有代码修改时，直接运行pm2 deploy ecosystem.json production 命令，完成一键部署。






一，获取微信小程序用户的openid
    url: localhost:3000/api/code
    方式：post
    入参：{code: "0a1jXEFa1ZRcdG0gFLGa1Fmh5L1jXEFd"}
    出参：新用户返回：{
            "code": 200,
            "data": {"openid:"opdesdasdsasdsadasdsa"}
    }

        老用户返回：
    {
                "code": 200,
                    "data": {
                    "id": 4,
                    "mobile": null,
                    "token": null,
                    "openid": "o0ouL63EfU3plZcHW12_MUHxXkYI",
                    "createdAt": "2023-10-17T03:29:01.000Z",
                    "updatedAt": "2023-10-17T03:29:01.000Z"
                }
    }

		Code无效返回：
    {
                "code": 300,
                "data": "code无效"
    }
二，验证客户代码正确性
    url: localhost:3000/api/customer
    方式：post
    入参：{customer: "aaaaaaaaaa"}
    出参：无效客户代码：
    {
                    "code": 200,
                    "data": null
    }
    有效的客户代码：
    {
                "code": 200,
                "data": {
                    "id": 1,
                "customer": "abcde",
                "createdAt": "2023-10-11T09:00:19.000Z",
                "updatedAt": "2023-10-11T09:00:19.000Z"
        }
    }
三，	发送短信验证码接口
    url: localhost:3000/api/sendCode?tel=15317787705
    方式：get
    入参：{“tel”:”137xxxxxxxx”}
    出参：{
                "code": 200,
                "data": 1表示数据库里这条验证码的id
    }
四，	问答结果提交（客户代码，手机号，问答结果，地理位置信息，回答所用的时间）
    url:  localhost:3000/api/addQuestion
    方式：post
    入参：{openid:””, mobile:””, resutl1:””, resutl2:””, resutl3:””, result4:””,time1:’’,time2:””,time3:””,time4:””,area:””, customerCode:”” }
    出参: {
            "code": 200,
            "data": 1  表示数据库里这条数据的id
    }
五，	短信验证码校验
    url: localhost:3000/api/wechatTel
    方式：post
    入参：{openid:””, tel:””, code:””,，area:””}
    出参: {
            "code": 200,
            "data": 1  表示数据库里这条数据的id
    }
六,判断用户是否已参与过活动
    url: localhost:3000/api/isFlag
    方式：get
    入参：{“openid”:””}
    出参：{"code": 300,"data": 1}    表示有参与过，不能在参与
	     {"code": 200,"data": 0}    表示有没有参与过，可以参与



后台数据需求：
1. 每个城市扫二维码总人数
2. 每个城市参与游戏总人数（身份验证答是，并全程完成问答的门店总数）
3. 每个城市未参与游戏总人数（身份验证有答否或未完成全程问答的门店总数）
4. 每个城市参与快问快答的门店客户代码编号，手机号码（仅限上海）
5. 每个城市点击观看3个新品知识点的门店总数
6. 每个城市每家门店每题回答的答案结果
7. 每个城市4道问题全答对门店总数（第四题设置必填，只要填写就算对）
8. 每个城市4道问题答错门店总数
9. 每个城市每道问题正确率
10. 每个城市每家门店答题所需花费时间
数据计算规则：
1，	直接统计user表中的area数量，如area=shanghai
2，	直接统计question表中customercode的数量且result1,result2,resut3,result4，四个答案都不为空的值的总数。
3，	直接统计question表中customercode的数量且result1,result2,resut3,result4，四个答案任意为空或者都为空的值的总数。(此题没有回答，或者直接跳过的，认为是没有参与或者中途退出的)
4，	直接查cuseomer表中area=shanghai的门店编码总数。查询user表中area=shanghai的用户总数
5， 查询question表中根据customerCode门店编码和result1,result2,result3 不为空的总数
6，	查询question表中根据customerCode门店编码表查询用户的答题结果,列表或者到处execl
7，	查询question表中根据area=shanghai 查right1,right2,right3,right4都为1的总数
8，	查询question表中根据area=shanghai 查right1,right2,right3,right4都为0的总数
9，	查询question表中根据area=shanghai 查right1,right2,right3,right4分别=1的总数/总答题数量=正确率%
10， 查询question表中根据customerCode=某个门店编码 查time1的列表形式展示，或者导出execl
		


